# 二分查找
def binary_search(list, item):
    low = 0
    high = len(list) - 1
    while low <= high:
        # 注意：Python中"/"表示浮点数除法，返回结果类型为浮点型float
        # "//"表示整数除法，返回结果类型为整形int
        # 这里要获取列表的索引，所以不能使用"/"，否则报错 TypeError: list indices must be integers or slices, not float
        mid = (low + high) // 2
        guess = list[mid]
        if guess == item:
            # 猜中了
            return mid
        elif guess > item:
            # 猜大了
            high = mid - 1
        else:
            # 猜小了
            low = mid + 1

    # list 中不存在猜的 item
    return None

list = [2, 3, 8, 9, 11]
print("list =", list)
# 5在list中的索引为 None
print("5在list中的索引为", binary_search(list, 5))
# 11在list中的索引为 4
print("11在list中的索引为", binary_search(list, 11))

